package com.zyh.demo;

import java.util.Scanner;

public class LoopDemo2 {
    public static void main(String[] args) {
        /*
        输出[0,100]之间的数，分别以递增和递减的方式实现

        int i = 0;
        System.out.println("递增输出");
        while (i < 101) {
            System.out.print(i + "\t");
            i++;
        }
        System.out.println();
        System.out.println("递减输出");
        int j = 100;
        while (j > 0) {
            System.out.print(j + "\t");
            j--;
        }

         */


        /*
        输出1-100之间的奇数和偶数

        int i = 1;
        while (i < 101) {
//            偶数
            if (i % 2 == 0) {
                System.out.print(i + "是偶数\t");
            } else {
                System.out.print(i + "是奇数\t");
            }
            i++;
        }

         */


        /*
        输入一个正整数n，计算1 + 2 + 3 +...+n的和

//        输入一个数据
        System.out.println("请输入一个正整数：");
        int num = new Scanner(System.in).nextInt();
//        判断数据是否合法
        if (num < 1) {
            System.err.println("输入有误！");
            return;
        }
//        定义总和
        int sum = 0;
        int i = 1;
        while (i <= num) {
            sum += i;
            i++;
        }
        System.out.println("1-" + num + "的总和为：" + sum);

         */


        /*
        输入一个正整数，计算1-2+3-4+5—6+...-(n-1)+n的和

//        输入一个数据
        System.out.println("请输入一个正整数：");
        int num = new Scanner(System.in).nextInt();
//        判断数据是否合法
        if (num < 1) {
            System.err.println("输入有误！");
            return;
        }
//        定义总和
        int sum = 0;
        int i=1;
        while (i<=num){
//            偶数累减
            if (i%2==0){
                sum-=i;
            }
//            奇数累加
            else {
                sum+=i;
            }
            i++;
        }
        System.out.println("和为："+sum);

         */



        /*
        假设一张纸厚度为0.01厘米，珠穆朗玛峰有8848米，如果不断折叠纸（纸无限大），折叠多少次到达珠峰的高度。

        double paper=0.01;
        int count=0;
        while (true){
            if (paper>=884800){
                break;
            }
            paper*=2;
            count++;
        }
        System.out.println("count = " + count);

         */



        /*
        韩信点兵，三人一组余两人，五人一组余三人，七人一组余四人，最少多少人

        int i=1;
        while (true){
            if (i%3==2&&i%5==3&&i%7==4){
                break;
            }
            i++;
        }
        System.out.println(i);

         */


        /*
        十进制转换为二进制

//        输入一个正整数
        System.out.println("请输入一个正整数：");
        int n = new Scanner(System.in).nextInt();
        if (n < 1) {
            System.err.println("输入有误！");
            return;
        }

         */
        /*
//        定义一个用于拼接的字符串
        String str = "";
        while (true) {
//            获取余数
            int bit = n % 2;
//            从后往前拼接
            str = bit + str;
            n = n / 2;
            if (n == 0) {
                break;
            }
        }
        System.out.print(str);


//         法2：整数相乘
//        temp循环的轮数变量
        int num = 0, temp = 1;
        while (true) {
//            求出每一轮循环取出的余数
            int bit = n % 2;
            num = (int) (bit *Math.pow(10,(temp-1))+num);
            n = n / 2;
//            当n==0结束死循环
            if (n == 0) {
                break;
            }
//            循环轮数+1
            temp++;
        }
        System.out.println(num);

         */


        /*
        输入一个数，判断是否为质数

        System.out.println("请输入一个正整数：");
        int num = new Scanner(System.in).nextInt();
//        判断数据是否合法
        if (num < 2) {
            System.err.println("输入有误！");
            return;
        }
        boolean flag = true;
//        数据合法时
        for (int i = 2; i <= num - 1; i++) {
            if (num % i == 0) {
//                说明不是质数
                flag = false;
                break;
            }
        }
        if (flag == true) {
            System.out.println(num + "是质数");
        } else {
            System.out.println(num + "不是质数");
        }

         */



        /*
        画图形
        ********
        ********
        ********
        ********
        ********
         *//*
        for (int i = 1; i < 6; i++) {
            for (int j = 0; j < 8; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
        *//*
        画图型
            ********
           ********
          ********
         ********
        ********
        行数      空格      星星
         0        4         8
         1        3         8
         2        2         8
         3        1         8
         4        0         8
         i       (4-i)      8
         *//*
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 4 - i; j++) {
                System.out.print(" ");
            }
            for (int k = 0; k < 8; k++) {
                System.out.print("*");
            }
            System.out.println();
        }

        *//*
        画图型
        *
       ***
      *****
     *******
    *********
        行数      空格      星星
         0        4         1
         1        3         3
         2        2         5
         3        1         7
         4        0         9
         i       (4-i)     2*i+1
         *//*
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 4 - i; j++) {
                System.out.print(" ");
            }
            for (int k = 0; k < (2 * i + 1); k++) {
                System.out.print("*");
            }
            System.out.println();
        }*/

        /*
        九九乘法表

        for (int i = 0; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(j + "*" + i + "=" + i * j + "\t");
            }
            System.out.println();
        }

         */

//        选做
        /*
            *
           ***
          *****
         *******
        *********

         *******
          *****
           ***
            *
        行数      空格      星星
         0        1         7
         1        2         5
         2        3         3
         3        4         1
         i

//        上半部分
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 4 - i; j++) {
                System.out.print(" ");
            }
            for (int k = 0; k < (2 * i + 1); k++) {
                System.out.print("*");
            }
            System.out.println();
        }
//        下半部分
        for (int i = 0; i < 4; i++) {
            for (int j = 0; j <= i; j++) {
                System.out.print(" ");
            }
            for (int k = 0; k <= (-2 * i + 2 * 3); k++) {
                System.out.print("*");
            }
            System.out.println();
        }
        */

    }
}
